9054
22420
숫자 배열이 있고 .push () 메서드를 사용하여 요소를 추가하고 있습니다.
배열에서 특정 요소를 제거하는 간단한 방법이 있습니까?
다음과 같은 것을 찾고 있습니다.
array.remove (숫자);
핵심 JavaScript를 사용해야합니다. 프레임 워크는 허용되지 않습니다. 
1
2
삼
4
다음
indexOf를 사용하여 제거하려는 배열 요소의 인덱스를 찾은 다음 splice를 사용하여 해당 인덱스를 제거합니다.
splice () 메서드는 다음을 제거하여 배열의 내용을 변경합니다.
기존 요소 및 / 또는 새 요소 추가.
const 배열 = [2, 5, 9];
console.log (배열);
const 인덱스 = array.indexOf (5);
if (인덱스> -1) {
array.splice (인덱스, 1);
}
// 배열 = [2, 9]
console.log (배열);
스플 라이스의 두 번째 매개 변수는 제거 할 요소의 수입니다. splice는 배열을 수정하고 제거 된 요소를 포함하는 새 배열을 반환합니다.
완전성을 위해 여기에 기능이 있습니다. 첫 번째 함수는 단일 항목 만 제거하고 (즉, [2,5,9,1,5,8,5]에서 5의 첫 번째 일치 항목 제거) 두 번째 함수는 모든 항목을 제거합니다.
function removeItemOnce (arr, value) {
var index = arr.indexOf (value);
if (인덱스> -1) {
arr.splice (인덱스, 1);
}
반환 arr;
}
function removeItemAll (arr, value) {
var i = 0;
while (i  = 0; i--) {
if (배열 [i] === 숫자) {
array.splice (i, 1);
}
}
인덱스 i의 요소를 더 이상 존재하지 않게 만들고 싶지만 다른 요소의 인덱스가 변경되는 것을 원하지 않는 경우 :
배열 삭제 [i];
|
2016 년 10 월에 편집 됨
간단하고 직관적이며 명시 적 (Occam의 면도기)
변경 불가능 (원래 어레이는 변경되지 않음)
브라우저에서 지원하지 않는 경우 표준 JavaScript 함수를 사용하여 수행하십시오. polyfill을 사용하십시오.
이 코드 예제에서는 "array.filter (...)"함수를 사용하여 배열에서 원하지 않는 항목을 제거합니다. 이 함수는 원래 배열을 변경하지 않고 새 배열을 만듭니다. 브라우저가이 기능을 지원하지 않는 경우 (예 : 버전 9 이전의 Internet Explorer 또는 버전 1.5 이전의 Firefox) Mozilla의 필터 폴리 필을 사용하는 것이 좋습니다.
항목 제거 (ECMA-262 Edition 5 코드 일명 구식 JavaScript)
var 값 = 3
var arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter (function (item) {
반환 항목! == 값
})
console.log (arr)
// [1, 2, 4, 5]
항목 제거 (ECMAScript 6 코드)
하자 값 = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter (항목 => 항목! == 값)
console.log (arr)
// [1, 2, 4, 5]
중요 ECMAScript 6 "() => {}"화살표 함수 구문은 Internet Explorer, Chrome 45 이전 버전, Firefox 22 이전 버전 및 Safari 10 이전 버전에서 전혀 지원되지 않습니다. 이전 브라우저에서 ECMAScript 6 구문을 사용하려면 BabelJS를 사용할 수 있습니다.
여러 항목 제거 (ECMAScript 7 코드)
이 방법의 또 다른 장점은 여러 항목을 제거 할 수 있다는 것입니다.
let forDeletion = [2, 3, 5]
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter (item =>! forDeletion.includes (item))
// !!! array.includes (...) 지원에 대해 아래를 읽으십시오 !!!
console.log (arr)
// [1, 4]
중요 Internet Explorer, Chrome 47 이전 버전, Firefox 43 이전 버전, Safari 9 이전 버전, Edge 14 이전 버전에서는 "array.includes (...)"기능이 전혀 지원되지 않으므로 여기에 Mozilla의 polyfill이 있습니다.
여러 항목 제거 (향후에 가능)
"This-Binding Syntax"제안이 수락되면 다음을 수행 할 수 있습니다.
// array-lib.js
export function remove (... forDeletion) {
return this.filter (item =>! forDeletion.includes (item))
}
// main.js
import {remove} from './array-lib.js'
let arr = [1, 2, 3, 4, 5, 3]
// ::이 바인딩 구문 제안
// "제거"기능을 "가상 방법"으로 사용
// Array.prototype을 확장하지 않고
arr = arr :: remove (2, 3, 5)
console.log (arr)
// [1, 4]
BabelJS에서 직접 시도해보십시오. :)
참고
Array.prototype.includes
기능성 구성
|
빈 자리를 유지할 것인지 여부에 따라 다릅니다.
빈 슬롯을 원하는 경우 :
배열 [인덱스] = 정의되지 않음;
빈 슬롯을 원하지 않는 경우 :
// 원본을 유지하려면 :
// oldArray = [... 배열];
// 배열을 수정합니다.
array.splice (인덱스, 1);
해당 항목의 값이 필요한 경우 반환 된 배열의 요소를 저장할 수 있습니다.
var value = array.splice (index, 1) [0];
배열의 양쪽 끝에서 제거하려면 마지막 항목에 array.pop ()을 사용하거나 첫 번째 항목에 array.shift ()를 사용할 수 있습니다 (둘 다 항목 값도 반환).
항목의 인덱스를 모르는 경우 array.indexOf (item)를 사용하여 가져올 수 있습니다 (if ()에서 하나의 항목을 가져 오거나 while ()에서 모두 가져 오기). array.indexOf (item)는 색인을 반환하거나 찾을 수없는 경우 -1을 반환합니다.
|
한 친구가 Internet Explorer 8에서 문제를 겪고 있었고 그가 한 일을 보여주었습니다. 나는 그에게 그것이 틀렸다고 말했고 그는 대답을 얻었다 고 말했습니다.여기. 현재 상위 답변은 모든 브라우저 (예 : Internet Explorer 8)에서 작동하지 않으며 항목의 첫 번째 항목 만 제거합니다.
배열에서 모든 인스턴스 제거
function array_remove_index_by_value (arr, item)
{
for (var i = arr.length; i--;)
{
if (arr [i] === 항목) {arr.splice (i, 1);}
}
}
배열을 거꾸로 반복하고 (항목이 제거됨에 따라 인덱스와 길이가 변경되므로) 항목이 발견되면 제거합니다. 모든 브라우저에서 작동합니다.
|
두 가지 주요 접근 방식이 있습니다.
splice () : anArray.splice (index, 1);
삭제 : anArray [index] 삭제;
배열에 대해 삭제를 사용할 때주의하십시오. 객체의 속성을 삭제하는 데는 좋지만 배열에는 좋지 않습니다. 배열에는 스플 라이스를 사용하는 것이 좋습니다.
배열에 대해 delete를 사용하면 anArray.length에 대해 잘못된 결과를 얻을 수 있습니다. 즉, delete는 요소를 제거하지만 length 속성 값은 업데이트하지 않습니다.
삭제를 사용한 후 인덱스 번호에 구멍이 생길 수도 있습니다. 삭제를 사용하기 전과 마찬가지로 인덱스 1, 3, 4, 8, 9 및 11과 길이를 가질 수 있습니다. 이 경우 인덱스가 더 이상 순차적이지 않기 때문에 모든 인덱싱 된 for 루프가 충돌합니다.
어떤 이유로 삭제를 사용해야하는 경우 배열을 반복해야 할 때 각 루프에 대해을 사용해야합니다. 사실, 가능하면 항상 인덱싱 된 for 루프를 사용하지 마십시오. 이렇게하면 코드가 더 강력 해지고 인덱스 문제가 덜 발생합니다.
|
Array.prototype.remove_by_value = function (val) {
for (var i = 0; i  row.id === 5);
var removed = helper.remove (arr, row => row.name.startsWith ( 'BMW'));
##정의
var helper = {
// 첫 번째 항목을 제거하고 반환
removeOne : function (array, predicate) {
for (var i = 0; i  [2, 3, 4]
|
ES6를 사용할 수 있습니다. 예를 들어이 경우 '3'값을 삭제하려면 :
var array = [ '1', '2', '3', '4', '5', '6']
var newArray = array.filter ((value) => value! = '3');
console.log (newArray);
출력 :
[ "1", "2", "4", "5", "6"]
|
삭제 된 위치가 제거 된 새 배열을 원하는 경우 언제든지 특정 요소를 삭제하고 배열을 필터링 할 수 있습니다. 필터 메서드를 구현하지 않는 브라우저의 경우 배열 개체의 확장이 필요할 수 있지만 장기적으로는 다음과 같이하는 것이 더 쉽습니다.
var my_array = [1, 2, 3, 4, 5, 6];
my_array [4] 삭제;
console.log (my_array.filter (function (a) {return typeof a! == 'undefined';}));
[1, 2, 3, 4, 6]이 표시되어야합니다.
|
다음은 JavaScript를 사용하여 배열에서 항목을 제거하는 몇 가지 방법입니다.
설명 된 모든 방법은 원래 배열을 변경하지 않고 대신 새 배열을 만듭니다.
항목의 색인을 알고있는 경우
배열이 있고 위치 i의 항목을 제거한다고 가정합니다.
한 가지 방법은 slice ()를 사용하는 것입니다.
const 항목 = [ 'a', 'b', 'c', 'd', 'e', ​​'f']
const i = 3
const filterItems = items.slice (0, i) .concat (items.slice (i + 1, items.length))
console.log (filteredItems)
slice ()는 수신 한 인덱스로 새 배열을 만듭니다. 처음부터 제거하려는 인덱스까지 새 배열을 만들고 제거한 다음 첫 번째 위치에서 배열의 끝까지 다른 배열을 연결합니다.
가치를 안다면
이 경우 한 가지 좋은 옵션은보다 선언적인 접근 방식을 제공하는 filter ()를 사용하는 것입니다.
const 항목 = [ 'a', 'b', 'c', 'd', 'e', ​​'f']
const valueToRemove = 'c'
const filtersItems = items.filter (item => item! == valueToRemove)
console.log (filteredItems)
이것은 ES6 화살표 기능을 사용합니다. 기존 기능을 사용하여 이전 브라우저를 지원할 수 있습니다.
const 항목 = [ 'a', 'b', 'c', 'd', 'e', ​​'f']
const valueToRemove = 'c'
const filterItems = items.filter (function (item) {
반환 항목! == valueToRemove
})
console.log (filteredItems)
또는 Babel을 사용하고 ES6 코드를 ES5로 다시 트랜스 파일하여 이전 브라우저에서보다 쉽게 ​​이해할 수 있도록하면서 코드에 최신 JavaScript를 작성할 수 있습니다.
여러 항목 제거
단일 항목 대신 많은 항목을 제거하려면 어떻게해야합니까?
가장 간단한 해결책을 찾아 보겠습니다.
색인 별
함수를 생성하고 일련의 항목을 제거 할 수 있습니다.
const 항목 = [ 'a', 'b', 'c', 'd', 'e', ​​'f']
const removeItem = (항목, i) =>
items.slice (0, i-1) .concat (items.slice (i, items.length))
letfilteredItems = removeItem (items, 3)
FilteredItems = removeItem (filteredItems, 5)
// [ "a", "b", "c", "d"]
console.log (filteredItems)
가치로
콜백 함수 내에 포함을 검색 할 수 있습니다.
const 항목 = [ 'a', 'b', 'c', 'd', 'e', ​​'f']
const valuesToRemove = [ 'c', 'd']
const filterItems = items.filter (item =>! valuesToRemove.includes (item))
// [ "a", "b", "e", "f"]
console.log (filteredItems)
원래 배열을 변경하지 마십시오.
splice () (slice ()와 혼동하지 말 것)는 원래 배열을 변경하므로 피해야합니다.
(원래 내 사이트 https://flaviocopes.com/how-to-remove-item-from-array/에 게시 됨)
|
이 코드를 확인하십시오. 모든 주요 브라우저에서 작동합니다.
remove_item = function (arr, value) {
var b = '';
for (b in arr) {
if (arr [b] === 값) {
arr.splice (b, 1);
단절;
}
}
반환 arr;
};
이 함수를 호출
remove_item (배열, 값);
|
ES6 및 변형 없음 : (2016 년 10 월)
const removeByIndex = (목록, 색인) =>
[
... list.slice (0, index),
... list.slice (인덱스 + 1)
];
output = removeByIndex ([33,22,11,44], 1) // => [33,11,44]
console.log (출력)
|
lodash _.pull (배열 변형), _.pullAt (배열 변형) 또는 _.without (배열 변형 안 함)을 사용할 수 있습니다.
var array1 = [ 'a', 'b', 'c', 'd']
_.pull (배열 1, 'c')
console.log (array1) // [ 'a', 'b', 'd']
var array2 = [ 'e', ​​'f', 'g', 'h']
_.pullAt (배열 2, 0)
console.log (array2) // [ 'f', 'g', 'h']
var array3 = [ 'i', 'j', 'k', 'l']
var newArray = _.without (array3, 'i') // [ 'j', 'k', 'l']
console.log (array3) // [ 'i', 'j', 'k', 'l']
|
배열에서 특정 요소 / 문자열을 제거하는 것은 한 줄로 수행 할 수 있습니다.
theArray.splice (theArray.indexOf ( "stringToRemoveFromArray"), 1);
어디:
theArray : 특정 항목을 제거하려는 배열
stringToRemoveFromArray : 제거 할 문자열이고 1은 제거 할 요소의 양입니다.
노트: "stringToRemoveFromArray"가 배열에 없으면 배열의 마지막 요소가 제거됩니다.
요소를 제거하기 전에 먼저 배열에 요소가 있는지 확인하는 것이 항상 좋습니다.
if (theArray.indexOf ( "stringToRemoveFromArray")> = 0) {
theArray.splice (theArray.indexOf ( "stringToRemoveFromArray"), 1);
}
클라이언트 컴퓨터에서 최신 Ecmascript 버전에 액세스 할 수있는 경우 (경고, 이전 스테이션에서는 작동하지 않을 수 있음) :
var array = [ '1', '2', '3', '4', '5', '6']
var newArray = array.filter ((value) => value! = '3');
여기서 '3'은 배열에서 제거 할 값입니다.
그러면 배열은 다음과 같습니다. [ '1', '2', '4', '5', '6']
|
예를 들어 아래에 배열이 있습니다.
var num = [1, 2, 3, 4, 5];
그리고 4 번을 삭제하고 싶습니다. 아래 코드를 사용하면됩니다.
num.splice (num.indexOf (4), 1); // 숫자는 [1, 2, 3, 5]입니다.
이 함수를 재사용하는 경우 아래와 같이 기본 배열 함수에 첨부 될 재사용 가능한 함수를 작성합니다.
Array.prototype.remove = Array.prototype.remove || function (x) {
const i = this.indexOf (x);
if (i ===-1)
반환;
this.splice (i, 1); // num.remove (5) === [1, 2, 3];
}
하지만 배열에 [5]가 몇 개있는 대신 아래 배열이 있다면 어떨까요?
var num = [5, 6, 5, 4, 5, 1, 5];
모두 확인하려면 루프가 필요하지만 더 쉽고 효율적인 방법은 내장 된 JavaScript 함수를 사용하는 것이므로 대신 아래와 같은 필터를 사용하는 함수를 작성합니다.
const _removeValue = (arr, x) => arr.filter (n => n! == x);
// _ removeValue ([1, 2, 3, 4, 5, 5, 6, 5], 5) // 반환 [1, 2, 3, 4, 6]
또한 Lodash 또는 Underscore와 같이이를 수행하는 데 도움이되는 타사 라이브러리가 있습니다. 자세한 내용은 lodash _.pull, _.pullAt 또는 _.without을 참조하십시오.
|
공연
오늘 (2019-12-09) 선택한 솔루션에 대해 macOS v10.13.6 (High Sierra)에서 성능 테스트를 수행합니다. 나는 delete (A)를 보여 주지만 배열에 빈 공간을 남겼 기 때문에 다른 방법과 비교하여 사용하지 않습니다.
결론
가장 빠른 솔루션은 array.splice (C)입니다 (두 번째로 사용되는 작은 배열의 경우 Safari 제외)
큰 배열의 경우 array.slice + splice (H)는 Firefox 및 Safari를위한 가장 빠른 불변 솔루션입니다. Array.from (B)는 Chrome에서 가장 빠릅니다.
변경 가능한 솔루션은 일반적으로 변경 불가능한 것보다 1.5x-6 배 빠릅니다.
Safari의 작은 테이블의 경우 놀랍게도 변경 가능한 솔루션 (C)이 변경 불가능한 솔루션 (G)보다 느립니다.
세부
테스트에서 나는 다른 방법으로 배열에서 중간 요소를 제거합니다. A, C 솔루션이 제자리에 있습니다. B, D, E, F, G, H 솔루션은 변경할 수 없습니다.
요소가 10 개인 배열에 대한 결과
Chrome에서 array.splice (C)는 가장 빠른 내부 솔루션입니다. array.filter (D)는 가장 빠른 불변 솔루션입니다. 가장 느린 것은 array.slice (F)입니다. 여기에서 컴퓨터에서 테스트를 수행 할 수 있습니다.
1.000.000 요소가있는 배열의 결과
Chrome에서 array.splice (C)는 가장 빠른 내부 솔루션입니다 (삭제 (C)는 빠르지 만 배열에 빈 슬롯을 남겼으므로 '전체 제거'를 수행하지 않습니다). array.slice-splice (H)는 가장 빠른 불변 솔루션입니다. 가장 느린 것은 array.filter (D 및 E)입니다. 여기에서 컴퓨터에서 테스트를 수행 할 수 있습니다.
var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var log = (letter, array) => console.log (letter, array.join`,`);
function A (array) {
var index = array.indexOf (5);
배열 [인덱스] 삭제;
log ( 'A', 배열);
}
function B (array) {
var index = array.indexOf (5);
var arr = Array.from (array);
arr.splice (인덱스, 1)
log ( 'B', arr);
}
function C (array) {
var index = array.indexOf (5);
array.splice (인덱스, 1);
log ( 'C', 배열);
}
function D (array) {
var arr = array.filter (item => item! == 5)
log ( 'D', arr);
}
function E (array) {
var index = array.indexOf (5);
var arr = array.filter ((item, i) => i! == index)
log ( 'E', arr);
}
function F (array) {
var index = array.indexOf (5);
var arr = array.slice (0, index) .concat (array.slice (index + 1))
log ( 'F', arr);
}
function G (array) {
var index = array.indexOf (5);
var arr = [... array.slice (0, index), ... array.slice (index + 1)]
log ( 'G', arr);
}
function H (array) {
var index = array.indexOf (5);
var arr = array.slice (0);
arr.splice (인덱스, 1);
log ( 'H', arr);
}
A ([... a]);
B ([... a]);
C ([... a]);
D ([... a]);
E ([... a]);
파]);
G ([... a]);
하아]);
이 스 니펫은 성능 테스트에 사용되는 코드 만 제공하며 자체적으로 테스트를 수행하지는 않습니다.
브라우저 비교 : Chrome v78.0.0, Safari v13.0.4, Firefox v71.0.0
|
저는 JavaScript를 처음 접했고이 기능이 필요했습니다. 나는 단지 이것을 썼다.
function removeFromArray (array, item, index) {
while ((index = array.indexOf (item))> -1) {
array.splice (인덱스, 1);
}
}
그런 다음 사용하고 싶을 때 :
// 일부 더미 데이터 설정
var dummyObj = {이름 : "meow"};
var dummyArray = [dummyObj, "item1", "item1", "item2"];
// 더미 데이터 제거
removeFromArray (dummyArray, dummyObj);
removeFromArray (dummyArray, "item2");
출력-예상대로.
[ "item1", "item1"]
저와 다른 요구 사항이있을 수 있으므로 쉽게 수정할 수 있습니다.그들에게 적합합니다. 누군가에게 도움이되기를 바랍니다.
|
배열에 복잡한 개체가있는 경우 필터를 사용할 수 있습니까?
$ .inArray 또는 array.splice가 사용하기 쉽지 않은 상황에서. 특히 객체가 배열에서 얕은 경우.
예 : Id 필드가있는 개체가 있고 배열에서 개체를 제거하려는 경우 :
this.array = this.array.filter (function (element, i) {
return element.id! == idToRemove;
});
|
ECMAScript 6을 기반으로 답변하고 싶습니다. 아래와 같은 배열이 있다고 가정합니다.
let arr = [1,2,3,4];
2와 같은 특수 인덱스에서 삭제하려면 아래 코드를 작성하십시오.
arr.splice (2, 1); // => arr은 [1,2,4]가되었습니다.
그러나 3과 같은 특수 항목을 삭제하고 색인을 모르는 경우 다음과 같이하십시오.
arr = arr.filter (e => e! == 3); // => arr은 [1,2,4]가되었습니다.
힌트 : 빈 배열을 얻지 않는 한 필터 콜백에 화살표 함수를 사용하십시오.
|
업데이트 :이 방법은 ECMAScript 2015 (이전의 ES6)를 사용할 수없는 경우에만 권장됩니다. 사용할 수 있다면 여기의 다른 답변이 훨씬 깔끔한 구현을 제공합니다.
이 요점은 문제를 해결하고 1 (또는 지정된 값) 대신 인수의 모든 발생을 삭제합니다.
Array.prototype.destroy = function (obj) {
// 개체가 발견 및 제거되지 않은 경우 null을 반환합니다.
var destroyed = null;
for (var i = 0; i  3
x.destroy (false); // => 거짓
엑스; // => [1, 2, true, undefined]
x.destroy (true); // => 참
x.destroy (정의되지 않음); // => 정의되지 않음
엑스; // => [1, 2]
x.destroy (3); // => null
엑스; // => [1, 2]
|
ES10 업데이트
이 게시물은 ECMAScript 2019 (ES10)부터 배열에서 요소를 제거하는 일반적인 접근 방식을 요약합니다.
1. 일반적인 경우
1.1. .splice ()를 사용하여 값으로 배열 요소 제거
| 현재 위치 : 예 |
| 중복 제거 : Yes (loop), No (indexOf) |
| 값 / 인덱스 별 : 인덱스 별 |
배열에서 제거하려는 값을 알고있는 경우 스플 라이스 방법을 사용할 수 있습니다. 먼저 대상 항목의 색인을 식별해야합니다. 그런 다음 색인을 시작 요소로 사용하고 하나의 요소 만 제거합니다.
// 'for'루프 사용
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
for (let i = 0; i  [1, 2, 3, 4, 6, 7, 8, 9, 0]
// .indexOf () 메서드 사용
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
const i = arr.indexOf (5);
arr.splice (i, 1); // => [1, 2, 3, 4, 6, 7, 8, 9, 0]
1.2. .filter () 메서드를 사용하여 배열 요소 제거
| 현재 위치 : 아니요 |
| 중복 제거 : 예 |
| 값 / 인덱스 별 : 값별 |
필터링 기능을 제공하여 특정 요소를 배열에서 필터링 할 수 있습니다. 그런 다음 배열의 모든 요소에 대해 이러한 함수가 호출됩니다.
const 값 = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter (항목 => 항목! == 값)
console.log (arr)
// [1, 2, 4, 5]
1.3. Array.prototype을 확장하여 Array 요소 제거
| 현재 위치 : 예 / 아니요 (구현에 따라 다름) |
| 중복 제거 : 예 / 아니오 (구현에 따라 다름) |
| 값 / 인덱스 별 : 인덱스 / 값별 (구현에 따라 다름) |
추가 방법으로 Array의 프로토 타입을 확장 할 수 있습니다. 그런 다음 생성 된 어레이에서 이러한 메서드를 사용할 수 있습니다.
참고 : JavaScript의 표준 라이브러리 (예 : Array)에서 개체의 프로토 타입을 확장하는 것은 일부 사람들에게 반 패턴으로 간주됩니다.
// 현재 위치, 값 구현에 의해 모두 제거
Array.prototype.remove = function (item) {
for (let i = 0; i  = ES10)
| 현재 위치 : 아니요 |
| 중복 제거 : 예 |
| 값 / 인덱스 별 : 값별 |
ES10은 Object.fromEntries를 도입했습니다.Array와 유사한 객체에서 원하는 Array를 만들고 프로세스 중에 원하지 않는 요소를 필터링하는 데 사용됩니다.
const 객체 = [1,2,3,4];
const valueToRemove = 3;
const arr = Object.values ​​(Object.fromEntries (
Object.entries (객체)
.filter (([key, val]) => val! == valueToRemove)
));
console.log (arr); // [1,2,4]
2. 특별한 경우
2.1 배열의 끝에있는 요소 제거
2.1.1. 어레이 길이 변경
| 현재 위치 : 예 |
| 중복 제거 : 아니오 |
| 값 / 인덱스 별 : N / A |
length 속성을 현재 값보다 작은 값으로 설정하여 JavaScript Array 요소를 배열 끝에서 제거 할 수 있습니다. 색인이 새 길이보다 크거나 같은 요소는 제거됩니다.
const arr = [1, 2, 3, 4, 5, 6];
arr.length = 5; // 요소 제거를위한 길이 설정
console.log (arr); // [1, 2, 3, 4, 5]
2.1.2. .pop () 메서드 사용
| 현재 위치 : 예 |
| 중복 제거 : 아니오 |
| 값 / 인덱스 별 : N / A |
pop 메서드는 배열의 마지막 요소를 제거하고 해당 요소를 반환하며 길이 속성을 업데이트합니다. pop 메서드는 호출되는 배열을 수정합니다. 즉, delete를 사용하는 것과 달리 마지막 요소가 완전히 제거되고 배열 길이가 줄어 듭니다.
const arr = [1, 2, 3, 4, 5, 6];
arr.pop (); // 6을 반환합니다.
console.log (arr); // [1, 2, 3, 4, 5]
2.2. 배열의 시작 부분에있는 경우 요소 제거
| 현재 위치 : 예 |
| 중복 제거 : 아니오 |
| 값 / 인덱스 별 : N / A |
.shift () 메서드는 마지막 요소 대신 JavaScript 배열의 첫 번째 요소를 제거한다는 점을 제외하면 pop 메서드와 매우 유사합니다. 요소가 제거되면 나머지 요소는 아래로 이동합니다.
const arr = [1, 2, 3, 4];
arr.shift (); // 1 반환
console.log (arr); // [2, 3, 4]
2.3. 배열의 유일한 요소 인 경우 요소 제거
| 현재 위치 : 예 |
| 중복 제거 : N / A |
| 값 / 인덱스 별 : N / A |
가장 빠른 방법은 배열 변수를 빈 배열로 설정하는 것입니다.
let arr = [1];
arr = []; // 빈 배열
또는 길이를 0으로 설정하여 2.1.1의 기술을 사용할 수 있습니다.
|
배열을 변경해서는 안됩니다. 이것은 함수형 프로그래밍 패턴에 위배됩니다. ECMAScript 6 메서드 필터를 사용하여 데이터를 변경하려는 배열을 참조하지 않고 새 배열을 만들 수 있습니다.
var myArray = [1, 2, 3, 4, 5, 6];
배열에서 5를 제거한다고 가정하면 다음과 같이 간단히 수행 할 수 있습니다.
myArray = myArray.filter (값 => 값! == 5);
그러면 제거하려는 값이없는 새 배열이 제공됩니다. 따라서 결과는 다음과 같습니다.
[1, 2, 3, 4, 6]; //이 배열에서 5 개가 제거되었습니다.
자세한 내용은 Array.filter의 MDN 설명서를 참조하십시오.
|
보다 현대적인 ECMAScript 2015 (이전의 Harmony 또는 ES 6) 접근 방식입니다. 주어진:
const 항목 = [1, 2, 3, 4];
const 인덱스 = 2;
그때:
items.filter ((x, i) => i! == index);
굽힐 수 있는:
[1, 2, 4]
Babel과 polyfill 서비스를 사용하여 브라우저에서 이것이 잘 지원되는지 확인할 수 있습니다.
|
요소의 여러 인스턴스가있는 경우 인덱스가 망가지지 않도록 역방향 루프를 수행 할 수 있습니다.
var myElement = "초콜릿";
var myArray = [ 'chocolate', 'poptart', 'poptart', 'poptart', 'chocolate', 'poptart', 'poptart', 'chocolate'];
/ * 중요한 코드 * /
for (var i = myArray.length-1; i> = 0; i--) {
if (myArray [i] == myElement) myArray.splice (i, 1);
}
console.log (myArray);
라이브 데모
|
배열에 1에서 9가 있고 5를 제거하려고합니다. 아래 코드를 사용하십시오.
var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var newNumberArray = numberArray.filter (m => {
반환 m! == 5;
});
console.log ( "새 배열, 5 개 제거됨", newNumberArray);
여러 값을 원할 경우. 예 :-1,7,8
var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var newNumberArray = numberArray.filter (m => {
반환 (m! == 1) && (m! == 7) && (m! == 8);
});
console.log ( "새 배열, 1,7 및 8 제거됨", newNumberArray);
배열에서 배열 값을 제거하려는 경우. 예 : [3,4,5]
var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var removebleArray = [3,4,5];
var newNumberArray = numberArray.filter (m => {
return! removebleArray.includes (m);
});
console.log ( "새 배열, [3,4,5] 제거됨", newNumberArray);
지원되는 브라우저는 링크를 포함합니다.
|
1
2
삼
4
다음
매우 적극적인 질문입니다. 이 질문에 답하기 위해 평판 10을 획득하십시오. 평판 요구 사항은 스팸 및 비 응답 활동으로부터이 질문을 보호하는 데 도움이됩니다.
찾고있는 답변이 아닙니까? 태그가 지정된 자바 스크립트 배열에 대한 다른 질문을 찾아 보거나 직접 질문하십시오.